#ifndef HTTPREQUEST_H
#define HTTPREQUEST_H
#include <QString>
#include <QMap>
#include "connection.h"
#include "loger.h"
class HttpRequest:public QObject
{
    Q_OBJECT
private:
    enum RequestMethod{GET = 1, POST}; //请求方式
    QMap<QString, QString> requestHeader;//请求头
    QString requestUri; //请求资源路径
    RequestMethod requestMethod; //请求方式
    QMap<QString, QString> params;//请求参数
    friend class HttpParser;
    Connection *conn =  nullptr;
public:
    explicit HttpRequest(QObject * parent);
    ~HttpRequest();
    /**
     * 获取请求方式
     * @brief getRequestMethod
     * @return
     */
    RequestMethod getRequestMethod();
    /**
     * 获取请求头
     * @brief getHeader
     * @return
     */
    const QMap<QString, QString>& getHeader();
    /**
     * 获取请求路径
     * @brief getRequestUri
     * @return
     */
    const QString& getRequestUri();

    /**
     * 获取请求参数
     * @brief getParams
     * @return
     */
    const QMap<QString, QString>& getParams();
    /**
     * 获取请求体
     * @brief getData
     * @return 已经读取的字节数
     */
    qint64 getRequestBody(char *buf, int bufSize);

    /**
     * 获取请求参数
     * @brief getParameter
     * @param paramName
     * @return
     */
     QString getParameter(QString& paramName);

};

#endif // HTTPREQUEST_H
